SportsClient copy.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. "use client";
  2. import { GameInfo } from "@/api/home";
  3. import { useRouter } from "@/i18n/routing";
  4. import { server } from "@/utils/client";
  5. import { useTranslations } from "next-intl";
  6. import Script from "next/script";
  7. import { FC, useEffect, useRef,useState } from "react";
  8. interface Props {
  9. brand_id: string;
  10. token: string;
  11. }
  12. // dedprz | deepwin365 | damslots | chips | deloro-casino
  13. const SportsClient: FC<Props> = (props) => {
  14. const t = useTranslations("ProfilePage");
  15. const { brand_id, token } = props;
  16. const [currentToken, setCurrentToken] = useState(token);
  17. const btRef = useRef(null);
  18. const router = useRouter();
  19. const getGameDetailApi = async () => {
  20. const data = await server
  21. .request<GameInfo>({
  22. url: "/v1/api/front/game_info_by_id",
  23. method: "post",
  24. data: { id: "sportsBet", mode: 1 },
  25. })
  26. .then((res) => {
  27. if (res.code === 200) {
  28. setCurrentToken(res.data.game_url)
  29. return res.data.game_url;
  30. } else {
  31. return "";
  32. }
  33. });
  34. return data;
  35. };
  36. const onLoad = () => {
  37. // @ts-ignore
  38. const bt = new BTRenderer();
  39. btRef.current = bt;
  40. console.log("btRef===>444", btRef)
  41. bt.initialize({
  42. brand_id: brand_id,
  43. token: token,
  44. onTokenExpired: getGameDetailApi,
  45. onSessionRefresh: () => router.refresh(),
  46. themeName: "default",
  47. lang: "pt-br",
  48. target: document.getElementById("betby"),
  49. betSlipOffsetBottom: 80,
  50. // betSlipOffsetRight: 750,
  51. betSlipZIndex: 1000,
  52. stickyTop: 0,
  53. betSlipOffsetTop: 50,
  54. onRecharge: function () {
  55. router.push("/deposit");
  56. },
  57. onRouteChange: function () {
  58. console.log("token===>5555", token)
  59. },
  60. onLogin: function () {},
  61. onRegister: function () {},
  62. onBetSlipStateChange: function () {},
  63. });
  64. };
  65. useEffect(() => {
  66. updateToken(token);
  67. // return () => {
  68. // // @ts-ignore
  69. // btRef.current?.kill();
  70. // };
  71. }, [token]);
  72. const updateToken = (token: string) => {
  73. // @ts-ignore
  74. console.log("token===>333",window.BTRenderer)
  75. if(currentToken!== token){
  76. // setCurrentToken(token);
  77. }
  78. // @ts-ignore
  79. if (window.BTRenderer) {
  80. onLoad();
  81. }
  82. }
  83. return (
  84. <>
  85. <div id="betby" className={"h-[100%]"}>
  86. </div>
  87. <Script src={"https://ui.invisiblesport.com/bt-renderer.min.js"} onLoad={onLoad} />
  88. </>
  89. );
  90. };
  91. export default SportsClient;